Often during the use of programs errors occur which were not expected. These errors are not predicted during the development and testing phase of the program. These types of errors are often only discovered post release of the program to the public. It can often be difficult to identify the root cause of the error due to the seemingly random circumstances which caused the error to occur. However, the identification of the source of error and the subsequent modification, or patching, of the program is often of great interest to those who developed the program. Two sources of information that can be useful in identifying the root cause of the error are logged information generated from event logging, and trace information generated from trace activity, i.e., software tracing.
Difficulties in making a clear distinction between event logging and software tracing arise from the fact that some of the same technologies are used for both, and further because many of the criteria that distinguish between the two are continuous rather than discrete. Trace information is typically generated by tracing software that executes a trace, i.e., tracing activity. In software engineering, tracing is a specialized use of logging to record information about a program's execution. This information is typically used by programmers for debugging purposes, and software monitoring tools to diagnose common problems with software. Unlike event logging, software tracing usually does not have the concept of a “class” of event or an “event code”.
Event logging often provides information useful for diagnostics and auditing. The different classes of events that will be logged, as well as what details will appear in the event messages, are often considered early in the development cycle of a program. Many event logging technologies allow or even require each class of event to be assigned a unique “code”, which is used by the event logging software or a separate viewer (e.g., Event Viewer) to format and output a human-readable message. This facilitates localization and allows users to more easily obtain information about errors that occur. Software tracing can provide program developers with information useful for debugging. This information is used both during the development cycle and after the software is released.